{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 連続型確率変数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:27.952227Z",
     "start_time": "2018-08-10T06:11:27.803384Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%precision 3\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:27.992954Z",
     "start_time": "2018-08-10T06:11:27.953405Z"
    }
   },
   "outputs": [],
   "source": [
    "from scipy import integrate\n",
    "import warnings\n",
    "\n",
    "# 積分に関するwarningを出力しないようにする\n",
    "warnings.filterwarnings('ignore',\n",
    "                        category=integrate.IntegrationWarning)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1次元の連続型確率変数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1次元の連続型確率変数の定義"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:27.995896Z",
     "start_time": "2018-08-10T06:11:27.994189Z"
    }
   },
   "outputs": [],
   "source": [
    "x_range = np.array([0, 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:27.999765Z",
     "start_time": "2018-08-10T06:11:27.997038Z"
    }
   },
   "outputs": [],
   "source": [
    "def f(x):\n",
    "    if x_range[0] <= x <= x_range[1]:\n",
    "        return 2 * x\n",
    "    else:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.004031Z",
     "start_time": "2018-08-10T06:11:28.000873Z"
    }
   },
   "outputs": [],
   "source": [
    "X = [x_range, f]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.114897Z",
     "start_time": "2018-08-10T06:11:28.005054Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = np.linspace(x_range[0], x_range[1], 100)\n",
    "\n",
    "fig = plt.figure(figsize=(10, 6))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "ax.plot(xs, [f(x) for x in xs], label='f(x)', color='gray')\n",
    "ax.hlines(0, -0.2, 1.2, alpha=0.3)\n",
    "ax.vlines(0, -0.2, 2.2, alpha=0.3)\n",
    "ax.vlines(xs.max(), 0, 2.2, linestyles=':', color='gray')\n",
    "\n",
    "# 0.4から0.6のx座標を用意\n",
    "xs = np.linspace(0.4, 0.6, 100)\n",
    "# xsの範囲でf(x)とx軸に囲まれた領域を塗りつぶす\n",
    "ax.fill_between(xs, [f(x) for x in xs], label='prob')\n",
    "\n",
    "ax.set_xticks(np.arange(-0.2, 1.3, 0.1))\n",
    "ax.set_xlim(-0.1, 1.1)\n",
    "ax.set_ylim(-0.2, 2.1)\n",
    "ax.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.118561Z",
     "start_time": "2018-08-10T06:11:28.115978Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.200, 0.000)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 第1引数が被積分関数、第2引数と第3引数が積分範囲\n",
    "integrate.quad(f, 0.4, 0.6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.123648Z",
     "start_time": "2018-08-10T06:11:28.119594Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy.optimize import minimize_scalar\n",
    "\n",
    "res = minimize_scalar(f)\n",
    "# 関数の最小値はfunというインスタンス変数に\n",
    "res.fun"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.128546Z",
     "start_time": "2018-08-10T06:11:28.124644Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.000"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.quad(f, -np.inf, np.inf)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.132151Z",
     "start_time": "2018-08-10T06:11:28.129775Z"
    }
   },
   "outputs": [],
   "source": [
    "def F(x):\n",
    "    return integrate.quad(f, -np.inf, x)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.137297Z",
     "start_time": "2018-08-10T06:11:28.133139Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.200"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "F(0.6) - F(0.4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.289237Z",
     "start_time": "2018-08-10T06:11:28.138285Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = np.linspace(x_range[0], x_range[1], 100)\n",
    "\n",
    "fig = plt.figure(figsize=(10, 6))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "ax.plot(xs, [F(x) for x in xs], label='F(x)', color='gray')\n",
    "ax.hlines(0, -0.1, 1.1, alpha=0.3)\n",
    "ax.vlines(0, -0.1, 1.1, alpha=0.3)\n",
    "ax.vlines(xs.max(), 0, 1, linestyles=':', color='gray')\n",
    "\n",
    "ax.set_xticks(np.arange(-0.1, 1.2, 0.1))\n",
    "ax.set_xlim(-0.1, 1.1)\n",
    "ax.set_ylim(-0.1, 1.1)\n",
    "ax.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.294763Z",
     "start_time": "2018-08-10T06:11:28.290445Z"
    }
   },
   "outputs": [],
   "source": [
    "y_range = [3, 5]\n",
    "\n",
    "def g(y):\n",
    "    if y_range[0] <= y <= y_range[1]:\n",
    "        return (y - 3) / 2\n",
    "    else:\n",
    "        return 0\n",
    "    \n",
    "def G(y):\n",
    "    return integrate.quad(g, -np.inf, y)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.404604Z",
     "start_time": "2018-08-10T06:11:28.296187Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ys = np.linspace(y_range[0], y_range[1], 100)\n",
    "\n",
    "fig = plt.figure(figsize=(10, 6))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "ax.plot(ys, [g(y) for y in ys],\n",
    "        label='g(y)', color='gray')\n",
    "ax.plot(ys, [G(y) for y in ys],\n",
    "        label='G(y)', ls='--', color='gray')\n",
    "ax.hlines(0, 2.8, 5.2, alpha=0.3)\n",
    "ax.vlines(ys.max(), 0, 1, linestyles=':', color='gray')\n",
    "\n",
    "ax.set_xticks(np.arange(2.8, 5.2, 0.2))\n",
    "ax.set_xlim(2.8, 5.2)\n",
    "ax.set_ylim(-0.1, 1.1)\n",
    "ax.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1次元の連続型確率分布の指標"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 平均"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.409065Z",
     "start_time": "2018-08-10T06:11:28.405672Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.667"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def integrand(x):\n",
    "    return x * f(x)\n",
    "\n",
    "integrate.quad(integrand, -np.inf, np.inf)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.412973Z",
     "start_time": "2018-08-10T06:11:28.410072Z"
    }
   },
   "outputs": [],
   "source": [
    "def E(X, g=lambda x: x):\n",
    "    x_range, f = X\n",
    "    def integrand(x):\n",
    "        return g(x) * f(x)\n",
    "    return integrate.quad(integrand, -np.inf, np.inf)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.417998Z",
     "start_time": "2018-08-10T06:11:28.413975Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.667"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.422613Z",
     "start_time": "2018-08-10T06:11:28.418954Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.333"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E(X, g=lambda x: 2*x+3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.427094Z",
     "start_time": "2018-08-10T06:11:28.423590Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.333"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2 * E(X) + 3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 分散"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.432982Z",
     "start_time": "2018-08-10T06:11:28.428338Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.056"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean = E(X)\n",
    "def integrand(x):\n",
    "    return (x - mean) ** 2 * f(x)\n",
    "\n",
    "integrate.quad(integrand, -np.inf, np.inf)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.437514Z",
     "start_time": "2018-08-10T06:11:28.434075Z"
    }
   },
   "outputs": [],
   "source": [
    "def V(X, g=lambda x: x):\n",
    "    x_range, f = X\n",
    "    mean = E(X, g)\n",
    "    def integrand(x):\n",
    "        return (g(x) - mean) ** 2 * f(x)\n",
    "    return integrate.quad(integrand, -np.inf, np.inf)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.442369Z",
     "start_time": "2018-08-10T06:11:28.438602Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.056"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.448284Z",
     "start_time": "2018-08-10T06:11:28.443567Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.222"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V(X, lambda x: 2*x + 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.453566Z",
     "start_time": "2018-08-10T06:11:28.449308Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.222"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2**2 * V(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2次元の連続型確率分布"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ２次元の連続型確率変数の定義"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.457569Z",
     "start_time": "2018-08-10T06:11:28.454533Z"
    }
   },
   "outputs": [],
   "source": [
    "x_range = [0, 2]\n",
    "y_range = [0, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.461611Z",
     "start_time": "2018-08-10T06:11:28.458553Z"
    }
   },
   "outputs": [],
   "source": [
    "def f_xy(x, y):\n",
    "    if 0 <= y <= 1 and 0 <= x - y <= 1:\n",
    "        return 4 * y * (x - y)\n",
    "    else:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:28.465610Z",
     "start_time": "2018-08-10T06:11:28.462661Z"
    }
   },
   "outputs": [],
   "source": [
    "XY = [x_range, y_range, f_xy]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:29.303850Z",
     "start_time": "2018-08-10T06:11:28.466567Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = np.linspace(x_range[0], x_range[1], 200)\n",
    "ys = np.linspace(y_range[0], y_range[1], 200)\n",
    "pd = np.array([[f_xy(x, y) for y in ys] for x in xs])\n",
    "\n",
    "fig = plt.figure(figsize=(10, 8))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "c = ax.pcolor(pd)\n",
    "ax.set_xticks(np.linspace(0, 200, 3), minor=False)\n",
    "ax.set_yticks(np.linspace(0, 200, 3), minor=False)\n",
    "ax.set_xticklabels(np.linspace(0, 2, 3))\n",
    "ax.set_yticklabels(np.linspace(0, 1, 3))\n",
    "ax.invert_yaxis()\n",
    "ax.xaxis.tick_top()\n",
    "fig.colorbar(c, ax=ax)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:29.948652Z",
     "start_time": "2018-08-10T06:11:29.304896Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.000"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 第1引数に被積分関数、第2引数にxの積分区間とyの積分区間\n",
    "integrate.nquad(f_xy,\n",
    "                [[-np.inf, np.inf],\n",
    "                 [-np.inf, np.inf]])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:29.952780Z",
     "start_time": "2018-08-10T06:11:29.949721Z"
    }
   },
   "outputs": [],
   "source": [
    "from functools import partial\n",
    "\n",
    "def f_X(x):\n",
    "    return integrate.quad(partial(f_xy, x), -np.inf, np.inf)[0]\n",
    "def f_Y(y):\n",
    "    return integrate.quad(partial(f_xy, y=y), -np.inf, np.inf)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:29.956931Z",
     "start_time": "2018-08-10T06:11:29.953833Z"
    }
   },
   "outputs": [],
   "source": [
    "X = [x_range, f_X]\n",
    "Y = [y_range, f_Y]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:30.264168Z",
     "start_time": "2018-08-10T06:11:29.957888Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = np.linspace(*x_range, 100)\n",
    "ys = np.linspace(*y_range, 100)\n",
    "\n",
    "fig = plt.figure(figsize=(12, 4))\n",
    "ax1 = fig.add_subplot(121)\n",
    "ax2 = fig.add_subplot(122)\n",
    "ax1.plot(xs, [f_X(x) for x in xs], color='gray')\n",
    "ax2.plot(ys, [f_Y(y) for y in ys], color='gray')\n",
    "ax1.set_title('Xの周辺密度関数')\n",
    "ax2.set_title('Yの周辺密度関数')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ２次元の連続型確率変数の指標"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 期待値"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:31.067034Z",
     "start_time": "2018-08-10T06:11:30.265183Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.333"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def integrand(x, y):\n",
    "    return x * f_xy(x, y)\n",
    "\n",
    "integrate.nquad(integrand,\n",
    "                [[-np.inf, np.inf],\n",
    "                 [-np.inf, np.inf]])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:31.071218Z",
     "start_time": "2018-08-10T06:11:31.068067Z"
    }
   },
   "outputs": [],
   "source": [
    "def E(XY, g):\n",
    "    x_range, y_range, f_xy = XY\n",
    "    def integrand(x, y):\n",
    "        return g(x, y) * f_xy(x, y)\n",
    "    \n",
    "    return integrate.nquad(integrand,\n",
    "                           [[-np.inf, np.inf],\n",
    "                            [-np.inf, np.inf]])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:31.980294Z",
     "start_time": "2018-08-10T06:11:31.072171Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.333"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_X = E(XY, lambda x, y: x)\n",
    "mean_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:32.871388Z",
     "start_time": "2018-08-10T06:11:31.981511Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.667"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_Y = E(XY, lambda x, y: y)\n",
    "mean_Y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:32.874071Z",
     "start_time": "2018-08-10T06:11:32.872430Z"
    }
   },
   "outputs": [],
   "source": [
    "a, b = 2, 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:34.077812Z",
     "start_time": "2018-08-10T06:11:32.875160Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.667"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E(XY, lambda x, y: a*x + b*y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:34.082361Z",
     "start_time": "2018-08-10T06:11:34.079307Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.667"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a * mean_X + b * mean_Y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 分散"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:35.007333Z",
     "start_time": "2018-08-10T06:11:34.083759Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.111"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def integrand(x, y):\n",
    "    return (x - mean_X)**2 * f_xy(x, y)\n",
    "\n",
    "integrate.nquad(integrand,\n",
    "                [[-np.inf, np.inf],\n",
    "                 [-np.inf, np.inf]])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:35.012878Z",
     "start_time": "2018-08-10T06:11:35.008630Z"
    }
   },
   "outputs": [],
   "source": [
    "def V(XY, g):\n",
    "    x_range, y_range, f_xy = XY\n",
    "    mean = E(XY, g)\n",
    "    def integrand(x, y):\n",
    "        return (g(x, y) - mean)**2 * f_xy(x, y)\n",
    "\n",
    "    return integrate.nquad(integrand,\n",
    "                           [[-np.inf, np.inf],\n",
    "                            [-np.inf, np.inf]])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:36.911431Z",
     "start_time": "2018-08-10T06:11:35.014218Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.111"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "var_X = V(XY, lambda x, y: x)\n",
    "var_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:38.732681Z",
     "start_time": "2018-08-10T06:11:36.912487Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.056"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "var_Y = V(XY, lambda x, y: y)\n",
    "var_Y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 共分散"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:38.737953Z",
     "start_time": "2018-08-10T06:11:38.733933Z"
    }
   },
   "outputs": [],
   "source": [
    "def Cov(XY):\n",
    "    x_range, y_range, f_xy = XY\n",
    "    mean_X = E(XY, lambda x, y: x)\n",
    "    mean_Y = E(XY, lambda x, y: y)\n",
    "    def integrand(x, y):\n",
    "        return (x-mean_X) * (y-mean_Y) * f_xy(x, y)\n",
    "\n",
    "    return integrate.nquad(integrand,\n",
    "                           [[-np.inf, np.inf],\n",
    "                            [-np.inf, np.inf]])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:41.381294Z",
     "start_time": "2018-08-10T06:11:38.739067Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.056"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov_xy = Cov(XY)\n",
    "cov_xy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:43.941672Z",
     "start_time": "2018-08-10T06:11:41.382269Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.611"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V(XY, lambda x, y: a*x + b*y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:43.945384Z",
     "start_time": "2018-08-10T06:11:43.942896Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.611"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a**2 * var_X + b**2 * var_Y + 2*a*b * cov_xy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:11:43.949265Z",
     "start_time": "2018-08-10T06:11:43.946448Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.707"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov_xy / np.sqrt(var_X * var_Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
